//package com.bestcem.xm.common.core.oss.service.impl;
//
//import cn.hutool.core.collection.CollUtil;
//import com.aliyun.oss.ClientBuilderConfiguration;
//import com.aliyun.oss.OSS;
//import com.aliyun.oss.OSSClientBuilder;
//import com.aliyun.oss.common.comm.Protocol;
//import com.aliyun.oss.internal.OSSConstants;
//import com.aliyun.oss.model.*;
//import com.bestcem.xm.common.core.oss.dao.OssRecordDao;
//import com.bestcem.xm.common.core.oss.entity.OssRecordEntity;
//import com.bestcem.xm.common.core.oss.enums.OssPathEnum;
//import com.bestcem.xm.common.core.oss.service.OssService;
//import com.bestcem.xm.common.core.uitls.CommonUtil;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
//import org.springframework.stereotype.Service;
//
//import javax.annotation.PostConstruct;
//import javax.annotation.Resource;
//import java.io.ByteArrayInputStream;
//import java.io.File;
//import java.io.InputStream;
//import java.io.UnsupportedEncodingException;
//import java.net.URL;
//import java.net.URLEncoder;
//import java.time.LocalDateTime;
//import java.time.ZoneId;
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//import java.util.Objects;
//import java.util.stream.Collectors;
//
//import static org.apache.commons.lang3.math.NumberUtils.LONG_ZERO;
//
///**
// * Oss操作service
// *
// * @author liheng
// * @version v1.0
// * @date 2021/8/4 12:29
// */
//@Service
//@Slf4j
//@ConditionalOnProperty(prefix = "OSS", name = "ossType", havingValue = "alioss")
//public class AliOssServiceImpl implements OssService {
//
//    public static final String OSS_TYPE = "alioss";
//
//    @Value("${OSS.alioss.endpoint:aa}")
//    private String endpoint;
//
//    @Value("${OSS.alioss.accessKeyId:aa}")
//    private String accessKeyId;
//
//    @Value("${OSS.alioss.accessKeySecret:aa}")
//    private String accessKeySecret;
//
//    @Value("${OSS.alioss.bucketName:aa}")
//    private String bucketName;
//
//    @Value("${OSS.alioss.cdn:rs2.bestcem.cn}")
//    private String cdn;
//
//    @Value("${OSS.alioss.file-prefix:test/}")
//    private String prefix;
//
//    @Value("${OSS.alioss.config.max-connections:1024}")
//    private Integer maxConnections;
//
//    @Value("${OSS.alioss.config.connection-timeout:50000}")
//    private Integer connectionTimeout;
//
//    @Value("${OSS.alioss.config.idle-connection-time:500000}")
//    private Long idleConnectionTime;
//
//    @Value("${OSS.alioss.config.protocol:HTTP}")
//    private String protocol;
//
//
//    private OSS ossClient;
//
//    private OSS httpsClient;
//    @Resource
//    private OssRecordDao ossRecordDao;
//
//    /**
//     * 初始化ossClient，请求oss前调用
//     */
//    @PostConstruct
//    public void initClient() {
//        ClientBuilderConfiguration config = new ClientBuilderConfiguration();
//        config.setMaxConnections(this.maxConnections);
//        config.setConnectionTimeout(this.connectionTimeout);
//        config.setIdleConnectionTime(this.idleConnectionTime);
//        config.setProtocol(Protocol.valueOf(protocol));
//        ossClient = new OSSClientBuilder().build(this.endpoint, this.accessKeyId, this.accessKeySecret, config);
//        ClientBuilderConfiguration httpsConfig = new ClientBuilderConfiguration();
//        httpsConfig.setMaxConnections(this.maxConnections);
//        httpsConfig.setConnectionTimeout(this.connectionTimeout);
//        httpsConfig.setIdleConnectionTime(this.idleConnectionTime);
//        httpsConfig.setProtocol(Protocol.HTTPS);
//        httpsClient = new OSSClientBuilder().build(this.endpoint, this.accessKeyId, this.accessKeySecret, httpsConfig);
//
//    }
//
//    /**
//     * 上传需要长时间存储文件
//     *
//     * @param file         上传文件对象
//     * @param fileName     文件名，例：aaa.txt
//     * @param modulePath   目录模块名前缀，使用不同目录区分不同模块文件，例：member/ds/
//     *                     长期存储文件目录
//     *                     {@link OssPathEnum#AWARD}
//     *                     {@link OssPathEnum#MEMBER}
//     *                     {@link OssPathEnum#TXTANLS}
//     *                     {@link OssPathEnum#OM}
//     * @param expireSecond 文件可用超时时间,单位为秒。如果要永久存储，可以传0或-1
//     * @param localDir     文件在本地的绝对路径，方便后续查找
//     * @param remark       上传文件用途，例如：文本分析-原话导出
//     * @return 访问文件的url
//     * modulePath参数请使用下面四种枚举
//     * @see OssPathEnum -AWARD
//     * @see OssPathEnum -MEMBER
//     * @see OssPathEnum -TXTANLS
//     * @see OssPathEnum -SAAS
//     */
//    @Override
//    public String uploadSimpleFile(File file, String fileName, OssPathEnum modulePath, long expireSecond, String localDir, String remark) {
//        String path = modulePath.getPath();
//        String url = "";
//        String uuid = CommonUtil.getUUID();
//        String key = this.prefix + path + uuid;
//        Date expireTime = null;
//        if (expireSecond > LONG_ZERO) {
//            LocalDateTime now = LocalDateTime.now();
//            expireTime = Date.from(now.plusSeconds(expireSecond).atZone(ZoneId.systemDefault()).toInstant());
//        }
//        try {
//            url = uploadWithName(file, key, expireTime, fileName);
//        } catch (Exception e) {
//            log.error("OSS upload error,fileName:{},modulePrefix:{},key:{}", fileName, path, key);
//        }
//        if (StringUtils.isNotBlank(url)) {
//            ossRecordDao.insertSimple(key, fileName, url, uuid, modulePath, expireTime, localDir, remark, OSS_TYPE);
//        }
//        return url;
//    }
//
//    @Override
//    public String uploadSimpleFile2(File file, String fileName, String path, long expireSecond, String localDir, String remark, OssPathEnum modulePath) {
//        String url = "";
//        String key = this.prefix + path + fileName;
//        Date expireTime = null;
//        if (expireSecond > LONG_ZERO) {
//            LocalDateTime now = LocalDateTime.now();
//            expireTime = Date.from(now.plusSeconds(expireSecond).atZone(ZoneId.systemDefault()).toInstant());
//        }
//        try {
//            url = uploadWithName(file, key, expireTime, fileName);
//        } catch (Exception e) {
//            log.error("OSS upload error,fileName:{},modulePrefix:{},key:{}", fileName, path, key);
//        }
//        if (StringUtils.isNotBlank(url)) {
//            ossRecordDao.insertSimple2(key, fileName, url, fileName, path, expireTime, localDir, remark, OSS_TYPE, modulePath);
//        }
//        return url;
//    }
//
//    /**
//     * 上传需要长时间存储文件
//     *
//     * @param file         上传文件对象
//     * @param fileName     文件名，例：aaa.txt
//     * @param modulePath   目录模块名前缀，使用不同目录区分不同模块文件，例：member/ds/
//     *                     长期存储文件目录
//     *                     {@link OssPathEnum#AWARD}
//     *                     {@link OssPathEnum#MEMBER}
//     *                     {@link OssPathEnum#TXTANLS}
//     *                     {@link OssPathEnum#OM}
//     * @param expireSecond 文件可用超时时间,单位为秒。如果要永久存储，可以传0或-1
//     * @param localDir     文件在本地的绝对路径，方便后续查找
//     * @param remark       上传文件用途，例如：文本分析-原话导出
//     * @return OssRecordEntity 保存记录
//     * modulePath参数请使用下面四种枚举
//     * @see OssPathEnum -AWARD
//     * @see OssPathEnum -MEMBER
//     * @see OssPathEnum -TXTANLS
//     * @see OssPathEnum -SAAS
//     */
//    @Override
//    public OssRecordEntity uploadSimpleFileReturnEntity(File file, String fileName, OssPathEnum modulePath, long expireSecond, String localDir, String remark) {
//        OssRecordEntity entity = new OssRecordEntity();
//        String path = modulePath.getPath();
//        String url = "";
//        String uuid = CommonUtil.getUUID();
//        String key = this.prefix + path + uuid;
//        Date expireTime = null;
//        if (expireSecond > LONG_ZERO) {
//            LocalDateTime now = LocalDateTime.now();
//            expireTime = Date.from(now.plusSeconds(expireSecond).atZone(ZoneId.systemDefault()).toInstant());
//        }
//        try {
//            url = uploadWithName(file, key, expireTime, fileName);
//        } catch (Exception e) {
//            log.error("OSS upload error,fileName:{},modulePrefix:{},key:{}", fileName, path, key);
//        }
//        if (StringUtils.isNotBlank(url)) {
//            entity = ossRecordDao.insertSimple(key, fileName, url, uuid, modulePath, expireTime, localDir, remark, OSS_TYPE);
//        }
//        return entity;
//    }
//
//    /**
//     * 上传临时存储文件,导出使用
//     *
//     * @param file         上传文件对象
//     * @param fileName     文件名，例：aaa.txt
//     * @param modulePath   目录模块名前缀，使用不同目录区分不同模块文件
//     *                     临时文件目录
//     *                     {@link OssPathEnum#TEMP_AWARD}
//     *                     {@link OssPathEnum#TEMP_MEMBER}
//     *                     {@link OssPathEnum#TEMP_TXTANLS}
//     *                     {@link OssPathEnum#TEMP_OM}
//     * @param expireSecond 文件可用超时时间，单位为秒
//     * @param localDir     文件在本地的绝对路径，方便后续查找
//     * @param remark       上传文件用途，例如：文本分析-原话导出
//     * @return 过期原因：modulePrefix使用枚举来定义
//     */
//    @Override
//    public String uploadTempFile(File file, String fileName, OssPathEnum modulePath, long expireSecond, String localDir, String remark) {
//        String path = modulePath.getPath();
//        String url = "";
//        String uuid = CommonUtil.getUUID();
//        String key = this.prefix + path + uuid;
//        if (expireSecond <= LONG_ZERO) {
//            log.error("上传临时文件必须设置失效时间!!,fileName:{},expireSecond:{}", fileName, expireSecond);
//            return url;
//        }
//        LocalDateTime now = LocalDateTime.now();
//        Date expireTime = Date.from(now.plusSeconds(expireSecond).atZone(ZoneId.systemDefault()).toInstant());
//
//        try {
//            url = uploadWithName(file, key, expireTime, fileName);
//        } catch (Exception e) {
//            log.error("oss 上传失败", e);
//            log.error("OSS upload error,fileName:{},modulePrefix:{},key:{}", fileName, path, key);
//        }
//        if (StringUtils.isNotBlank(url)) {
//            ossRecordDao.insertTemp(key, fileName, url, uuid, modulePath, expireTime, localDir, remark, OSS_TYPE);
//        }
//        return url;
//    }
//
//    /**
//     * 上传临时存储文件,导出使用
//     *
//     * @param file         上传文件对象
//     * @param fileName     文件名，例：aaa.txt
//     * @param modulePath   目录模块名前缀，使用不同目录区分不同模块文件
//     *                     临时文件目录
//     *                     {@link OssPathEnum#TEMP_AWARD}
//     *                     {@link OssPathEnum#TEMP_MEMBER}
//     *                     {@link OssPathEnum#TEMP_TXTANLS}
//     *                     {@link OssPathEnum#TEMP_OM}
//     * @param expireSecond 文件可用超时时间，单位为秒
//     * @param localDir     文件在本地的绝对路径，方便后续查找
//     * @param remark       上传文件用途，例如：文本分析-原话导出
//     * @return 过期原因：modulePrefix使用枚举来定义 返回数据库保存实体
//     */
//    @Override
//    public OssRecordEntity uploadTempFileReturnEntity(File file, String fileName, OssPathEnum modulePath, long expireSecond, String localDir, String remark) {
//        OssRecordEntity entity = new OssRecordEntity();
//        String path = modulePath.getPath();
//        String url = "";
//        String uuid = CommonUtil.getUUID();
//        String key = this.prefix + path + uuid;
//        if (expireSecond <= LONG_ZERO) {
//            log.error("上传临时文件必须设置失效时间!!,fileName:{},expireSecond:{}", fileName, expireSecond);
//            return null;
//        }
//        LocalDateTime now = LocalDateTime.now();
//        Date expireTime = Date.from(now.plusSeconds(expireSecond).atZone(ZoneId.systemDefault()).toInstant());
//
//        try {
//            url = uploadWithName(file, key, expireTime, fileName);
//        } catch (Exception e) {
//            log.error("oss 上传失败", e);
//            log.error("OSS upload error,fileName:{},modulePrefix:{},key:{}", fileName, path, key);
//        }
//        if (StringUtils.isNotBlank(url)) {
//            entity = ossRecordDao.insertTemp(key, fileName, url, uuid, modulePath, expireTime, localDir, remark, OSS_TYPE);
//        }
//        return entity;
//    }
//
//    /**
//     * 上传临时存储文件对应的字节流数组,导出使用
//     *
//     * @param data         上传文件对象对应的字节流数组
//     * @param fileName     文件名，例：aaa.txt
//     * @param modulePath   目录模块名前缀，使用不同目录区分不同模块文件
//     * @param expireSecond 文件可用超时时间，单位为秒
//     * @param remark       上传文件用途，例如：文本分析-原话导出
//     * @return java.lang.String
//     * @author zhangfeng <feng.zhang@idiaoyan.com>
//     * @date 2021/8/12 13:38
//     */
//    @Override
//    public String uploadTempFile(byte[] data, String fileName, OssPathEnum modulePath,
//                                 long expireSecond, String remark) {
//        String url = "";
//        if (Objects.isNull(data) || Objects.isNull(modulePath)) {
//            log.error("OSS uploadFile error, data is empty", fileName, modulePath.getName());
//            return url;
//        }
//
//        String path = modulePath.getPath();
//        String uuid = CommonUtil.getUUID();
//        String key = this.prefix + path + uuid;
//        if (expireSecond <= LONG_ZERO) {
//            log.error("上传临时文件必须设置失效时间!!,fileName:{},expireSecond:{}", fileName, expireSecond);
//            return url;
//        }
//        LocalDateTime now = LocalDateTime.now();
//        Date expireTime = Date.from(now.plusSeconds(expireSecond).atZone(ZoneId.systemDefault()).toInstant());
//
//        try (InputStream is = new ByteArrayInputStream(data)) {
//            if (!httpsClient.doesBucketExist(this.bucketName)) {
//                log.error("bucket not found,bucket name is {} ", this.bucketName);
//                return url;
//            }
//
//            ObjectMetadata metadata = new ObjectMetadata();
//            // 设置下载文件的文件名
//            metadata.setContentDisposition(
//                    String.format("attachment;filename=%s", URLEncoder.encode(fileName, "UTF-8")));
//            // 设置过期时间
//            metadata.setExpirationTime(expireTime);
//
//            PutObjectResult putObjectResult = httpsClient.putObject(this.bucketName, key, is, metadata);
//            if (log.isInfoEnabled()) {
//                log.info("response:{}", putObjectResult);
//            }
//            url = getHttpsUrlWithExpiration(key, expireTime);
//        } catch (Exception e) {
//            log.error("oss 上传失败", e);
//            log.error("OSS upload error,fileName:{},modulePrefix:{},key:{}", fileName, path, key);
//        }
//        if (StringUtils.isNotBlank(url)) {
//            ossRecordDao.insertTemp(key, fileName, url, uuid, modulePath, expireTime, "", remark, OSS_TYPE);
//        }
//        return url;
//    }
//
//    @Override
//    public String uploadFile(byte[] data, String fileName, OssPathEnum modulePath,
//                             String remark) {
//        String url = "";
//        if (Objects.isNull(data) || Objects.isNull(modulePath)) {
//            log.error("OSS uploadFile error, data is empty", fileName, modulePath.getName());
//            return url;
//        }
//
//        String path = modulePath.getPath();
//        String uuid = CommonUtil.getUUID();
//        String key = this.prefix + path + uuid + "/" + fileName;
//        try (InputStream is = new ByteArrayInputStream(data)) {
//            if (!httpsClient.doesBucketExist(this.bucketName)) {
//                log.error("bucket not found,bucket name is {} ", this.bucketName);
//                return url;
//            }
//
//            ObjectMetadata metadata = new ObjectMetadata();
//            // 设置下载文件的文件名
//            metadata.setContentDisposition(
//                    String.format("attachment;filename=%s", URLEncoder.encode(fileName, "UTF-8")));
//            PutObjectResult putObjectResult = httpsClient.putObject(this.bucketName, key, is, metadata);
//            if (log.isInfoEnabled()) {
//                log.info("response:{}", putObjectResult);
//            }
//            url = getHttpsUrlWithExpiration(key, null);
//        } catch (Exception e) {
//            log.error("oss 上传失败", e);
//            log.error("OSS upload error,fileName:{},modulePrefix:{},key:{}", fileName, path, key);
//        }
//        if (StringUtils.isNotBlank(url)) {
//            ossRecordDao.insertTemp(key, fileName, url, uuid, modulePath, null, "", remark, OSS_TYPE);
//        }
//        return url;
//    }
//
//    private String upload(File file, String key, Date expireTime) {
//        if (!ossClient.doesBucketExist(this.bucketName)) {
//            log.error("bucket not found,bucket name is {} ", this.bucketName);
//            return "";
//        }
//        // 设置过期时间
//        ObjectMetadata metadata = null;
//        if (Objects.nonNull(expireTime)) {
//            metadata = new ObjectMetadata();
//            metadata.setExpirationTime(expireTime);
//        }
//        PutObjectResult putObjectResult = ossClient.putObject(this.bucketName, key, file, metadata);
//        log.info("response:{}", putObjectResult);
//        return getUrlWithExpiration(key, expireTime);
//    }
//
//    /**
//     * @param file       文件对象
//     * @param key        ossKey
//     * @param expireTime 过期日期
//     * @param fileName   需要返回前端的文件
//     * @return 生成的访问的连接
//     */
//    private String uploadWithName(File file, String key, Date expireTime, String fileName) throws UnsupportedEncodingException {
//        if (!ossClient.doesBucketExist(this.bucketName)) {
//            log.error("bucket not found,bucket name is {} ", this.bucketName);
//            return "";
//        }
//        // 设置过期时间
//        ObjectMetadata metadata = null;
//        metadata = new ObjectMetadata();
//        metadata.setContentDisposition("attachment;filename=\"" + URLEncoder.encode(fileName, "UTF-8") + "\"");
//
//        if (Objects.nonNull(expireTime)) {
//            metadata.setExpirationTime(expireTime);
//        }
//        PutObjectResult putObjectResult = ossClient.putObject(this.bucketName, key, file, metadata);
//        log.info("response:{}", putObjectResult);
//        return getHttpsUrlWithExpiration(key, expireTime);
//    }
//
//    /**
//     * @param fileKey    文件key
//     * @param expireDate 过期时间，不传过期时间会返回永久查询连接，慎重
//     * @return 返回文件访问url
//     */
//    private String getUrlWithExpiration(String fileKey, Date expireDate) {
//        // 设置链接过期时间
//        if (expireDate == null) {
//            // 生成永久访问链接
//            return OSSConstants.PROTOCOL_HTTP + this.bucketName + "." + this.endpoint + "/" + fileKey;
//        }
//        URL url = ossClient.generatePresignedUrl(this.bucketName, fileKey, expireDate);
//        log.info("key:{} is exist in bucketName {}", fileKey, this.bucketName);
//        return url.toString();
//    }
//
//    /**
//     * @param fileKey    文件key
//     * @param expireDate 过期时间，不传过期时间会返回永久查询连接，慎重
//     * @return 返回文件访问url
//     */
//    private String getHttpsUrlWithExpiration(String fileKey, Date expireDate) {
//        // 设置链接过期时间
//        // 由于cdn原因，无法生成过期链接，统一返回永久访问链接
//        return OSSConstants.PROTOCOL_HTTPS + this.cdn + "/" + fileKey;
//    }
//
//    /**
//     * 根据key删除OSS文件
//     * 注意：只可以删除OSS_Record表中有记录的key，否则会返回删除失败，也就是0L
//     *
//     * @param key OSS中的key
//     * @return 删除条数, 删除成功为1，失败为0
//     */
//    @Override
//    public long deleteByKey(String key) {
//        OssRecordEntity entity = ossRecordDao.findByKey(key);
//        if (Objects.isNull(entity)) {
//            log.error("OSS key未查询到上传记录,OSS key:{}", key);
//            return LONG_ZERO;
//        }
//        long deleteCount = 0L;
//        try {
//            deleteCount++;
//            ossClient.deleteObject(this.bucketName, key);
//        } catch (Exception e) {
//            deleteCount--;
//            log.error("oss 上传失败", e);
//            log.error("删除OSS文件出现异常，OSS_key:{},exception:{}", key, e);
//        }
//        if (deleteCount > 0) {
//            return ossRecordDao.updateIsDeleted(entity.getId());
//        }
//        return deleteCount;
//    }
//
//    /**
//     * 删除模块内OSS中未删除并且已过期的文件
//     *
//     * @param modulePath 模块目录
//     *                   {@link OssPathEnum#AWARD}
//     *                   {@link OssPathEnum#MEMBER}
//     *                   {@link OssPathEnum#TXTANLS}
//     *                   {@link OssPathEnum#OM}
//     *                   {@link OssPathEnum#TEMP_AWARD}
//     *                   {@link OssPathEnum#TEMP_MEMBER}
//     *                   {@link OssPathEnum#TEMP_TXTANLS}
//     *                   {@link OssPathEnum#TEMP_OM}
//     * @return 删除文件数量
//     * @see OssPathEnum
//     */
//    @Override
//    public long deleteTempByModule(OssPathEnum modulePath) {
//        int pageSize = 200;
//        List<OssRecordEntity> ossRecordEntities = null;
//        long deleteCount = 0L;
//        do {
//            ossRecordEntities = ossRecordDao.findTempByModule(modulePath, pageSize);
//            if (CollUtil.isEmpty(ossRecordEntities)) {
//                log.error("模块中可删除文件数为空,modulePath:{}", modulePath);
//                return deleteCount;
//            }
//            List<String> keys = new ArrayList<>(ossRecordEntities.size());
//            List<String> ids = new ArrayList<>(ossRecordEntities.size());
//            for (OssRecordEntity ossRecordEntity : ossRecordEntities) {
//                keys.add(ossRecordEntity.getOssKey());
//                ids.add(ossRecordEntity.getId());
//            }
//            DeleteObjectsRequest deleteObjectsRequest = new DeleteObjectsRequest(this.bucketName);
//            deleteObjectsRequest.withKeys(keys);
//            DeleteObjectsResult deleteObjectsResult = ossClient.deleteObjects(deleteObjectsRequest);
//            List<String> deletedKeys = deleteObjectsResult.getDeletedObjects();
//            if (deletedKeys.size() == ossRecordEntities.size()) {
//                deleteCount += ossRecordDao.deleteRecord(ids);
//            } else {
//                List<String> deletedIds = ossRecordEntities.stream().filter(o -> deletedKeys.contains(o.getOssKey())).map(OssRecordEntity::getId).collect(Collectors.toList());
//                log.error("删除OSS临时文件未删除完全，需要删除的文件记录id:{},完成删除的文件记录id:{}", ids, deletedIds);
//                deleteCount += ossRecordDao.deleteRecord(deletedIds);
//            }
//
//        } while (CollUtil.isNotEmpty(ossRecordEntities) && ossRecordEntities.size() == pageSize);
//        return deleteCount;
//
//    }
//
//    /**
//     * 下载文件流
//     *
//     * @param ossKey OSS中存储的
//     * @return
//     */
//    @Override
//    public InputStream downloadFile(String ossKey) {
//        OSSObject object = null;
//        try {
//            object = ossClient.getObject(this.bucketName, ossKey);
//        } catch (Exception e) {
//            log.error("下载OSS文件报错，ossKey:{}", ossKey);
//            log.error("现在文件报错，异常信息.", e);
//        }
//        return Objects.isNull(object) ? null : object.getObjectContent();
//
//    }
//
//    /**
//     * 下载文件
//     *
//     * @param ossKey OSS中存储的
//     * @param file   指定的下载到文件对象
//     * @return
//     */
//    @Override
//    public void downloadFile(String ossKey, File file) {
//        if (Objects.isNull(file)) {
//            log.error("下载文件File对象不能为空");
//            return;
//        }
//        try {
//            GetObjectRequest request = new GetObjectRequest(this.bucketName, ossKey);
//
//            ossClient.getObject(request, file);
//        } catch (Exception e) {
//            log.error("下载OSS文件报错，ossKey:{}", ossKey);
//            log.error("现在文件报错，异常信息.", e);
//        }
//
//    }
//
//    /**
//     * 下载文件
//     *
//     * @param url oss文件的url
//     * @return 返回流，使用流请记得关闭！！
//     */
//    @Override
//    public InputStream downloadByUrl(String url) {
//
//        OSSObject object = null;
//        try {
//            object = ossClient.getObject(new URL(url), null);
//        } catch (Exception e) {
//            log.error("下载OSS文件报错，url:{}", url);
//            log.error("现在文件报错，异常信息.", e);
//        }
//        return Objects.isNull(object) ? null : object.getObjectContent();
//    }
//
//    /**
//     * 使用OSSKey直接删除OSS中的文件，不修改记录表
//     * 用来删除未存记录表的文件
//     *
//     * @param ossKey ossKey
//     */
//    @Override
//    public void trueDelete(String ossKey) {
//        ossClient.deleteObject(this.bucketName, ossKey);
//    }
//
//    @Override
//    public String getFilePrefix() {
//        return prefix;
//    }
//
//    @Override
//    public String getCdn() {
//        return cdn;
//    }
//
//    @Override
//    public String getUrlPrefix() {
//        return OSSConstants.PROTOCOL_HTTPS + this.cdn + "/" + this.prefix;
//    }
//}
